#include "user.h"


void Set_GPIO_group_inout(GPIO_group_e group, U8 inout) 
{
#if 0
	if(group == GPIO_PB)
	{
		DDRB = inout;
	}
	else if(group == GPIO_PC)
	{
		DDRC = inout;
	}
	else
	{
		DDRC = inout;
	}
#endif
}

void Set_GPIO_bit_inout(GPIO_group_e group, U8 index, U8 inout)
{
#if 0
	U8 regvalue;
	if(group == GPIO_PB)
	{
		regvalue = DDRB;
	}
	else if(group == GPIO_PC)
	{
		regvalue = DDRC;
	}
	else if(group == GPIO_PD)
	{
		regvalue = DDRD;
	}

	if(inout)
	{
		regvalue |= ( 0x01 << index);
	}
	else
	{
		regvalue &= (~( 0x01 << index));
	}
	Set_GPIO_group_inout(group, regvalue);
#endif
}
	
void Set_GPIO_group_output(GPIO_group_e group, U8 value)
{
	if(group == GPIO_PB)
	{
		PORTB = value;
	}
	else if(group == GPIO_PC)
	{
		PORTC = value;
	}
	else if(group == GPIO_PD)
	{
		PORTD = value;
	}
}

U8 Get_GPIO_group(GPIO_group_e group)
{
	if(group == GPIO_PB)
	{
		return PORTB;
	}
	else if(group == GPIO_PC)
	{
		return PORTC;
	}
	else if(group == GPIO_PD)
	{
		return PORTD;
	}
	return 0xff;
}

void Set_GPIO_bit_output(GPIO_group_e group, U8 index, U8 value)
{
	U8 regvalue = Get_GPIO_group(group);

	if(value)
	{
		regvalue |= ( 0x01 << index);
	}
	else
	{
		regvalue &= (~( 0x01 << index));
	}
	Set_GPIO_group_output(group, regvalue);
}


U8 get_GPIO_bit(GPIO_group_e group, U8 index)
{
	return (Get_GPIO_group(group) & (0x01 << index)) ? 1 : 0;
}

